/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controller;

import Pokemons.Charmander;
import Pokemons.Squirtle;
import Pokemons.Pikachu;
import Pokemons.Pokemon;
import Pokemons.Bulbasaur;

/**Autores:
 * Hugo Hiroshi Yamamura
 * Marina Coimbra Viviani
 *
 * Class SelectPokemon
 * A Classe eh a responsável por controlar a troca e seleção de pokemons.
 */
public class SelectPokemon {
    private int pkm;
    private int XTAM;
    private int h;
    private int k;
    private int XBEGIN;
    private int XEND;
    private int YBEGIN;
    private int YEND;
    private int NUMCOL;
    private Pokemon poke;

    
   public SelectPokemon(){
        this.pkm = 0;
        this.XTAM = 70;
        this.h = 89;
        this.k = 12;
        this.XBEGIN = 147;
        this.XEND = 455;
        this.YEND = 205;
        this.YBEGIN = 120;
        this.NUMCOL= 4;

    }
 /*
    * 
    * Metodo: getpoke
    * @param: coordenada x na qual deseja-se inserir o pokemon
    * @param2: coordanada y na qual deseja-se inserir o pokemon
    * @return o tipo correto de pokemon a ser visualizado.
    */
    
    public Pokemon getPoke(int x, int y) {

        if(this.pkm == 0){
                poke =  new Pikachu(x, y);
               
            }
            if(this.pkm == 1){
                poke = (Bulbasaur) new Bulbasaur(x, y);
              
            }
            if(this.pkm == 2){
                poke = (Charmander) new Charmander(x, y);
               
            }
            if(this.pkm == 3){
                poke =(Squirtle) new Squirtle(x, y);
             
            }

        return poke;
    }
    
 /*
    * 
    * Metodo: findCol
    * @param: coordenada x do mouse quando clicou sobre a tabela de inserção de pokemons
    * 
    * @return em qual coluna da tabela o mouse clicou.
    */
    

    public int findCol(int x){

        if( x < XBEGIN || x > XEND )
            return -1;

        x = x - XBEGIN;

        for(int i = 0; i < NUMCOL; i++){
            if(x < (i*(XTAM))) return -1;
            if(x > (i*XTAM) && x < ((i*XTAM)+ XTAM + k)) return i;
        }
        return -1;
    }
    
     /*
    * 
    * Metodo: findRow
    * @param: coordenada y do mouse quando clicou sobre a tabela de inserção de pokemons
    * 
    * @return verifica se a posição y do mouse era válida no momento do clique.
     *        retorna -1 cao inválida.
    */

    public int findRow(int y){

        if(y < YBEGIN || y > YEND )
            return -1;

        y = y - YBEGIN;

        return 1;
    }
    
     /*
    * 
    * Metodo: selecting
    * @param: coordenada x do mouse quando clicou sobre a tabela de inserção de pokemons
    * @param2: coordanada y do mouse quando clicou sobre a tabela de inserção de pokemons
    * Funcionamento: Decide qual o tipo mais adequado de pokemon a ser selecionado.
    */
    

    public void selecting(int x, int y){

        if(this.findRow(y) != -1){
            pkm = this.findCol(x);
            }

    }

}
    
